This invention relates to a method and apparatus for monitoring computer program events or actions as such events or actions are carried out on a data processor.
In evaluating and optimizing computer programs, it is desirable to obtain information as to the actual execution of the program such as, for example, information about the time required for executing different parts of the program, the number of times different parts of the program are executed over a given period of time, etc. One method of doing this is to provide for a type of self-monitoring in which the programs being monitored are modified to include instructions which enable the data processor to generate and maintain information regarding the execution of the programs. The result of this, of course, is that additional software is required and the time required for executing the computer programs is increased.
There are arrangements which attempt to reduce the amount of additional software necessary for monitoring software events, one such arrangement being the use of apparatus such as the so-called Dynaprobe-7900 and Dynaprobe-7720, both produced by Comten, Inc. With this apparatus, the monitoring is carried out with respect to the locations in memory in which the computer programs being monitored are identified by the locations in memory in which the instructions affecting such events or actions are stored, and the accessing of the memory to obtain such instructions is monitored by the mentioned equipment. As long as the programs being monitored are maintained in the same locations in memory, this arrangement is suitable at least for certain types of monitoring. However, if the system in question is a "non-resident" system in which the programs may be put in different locations in memory from one processing run to another, then the arrangement is unsuitable simply because there is no way to know where the different programs are stored and thus what events are being monitored.